#ifndef WRITERTOMODEL_H
#define WRITERTOMODEL_H

#include <QObject>

class QAbstractItemModel;
class QXmlStreamWriter;
class QModelIndex;

/** Читает данные из QXmlStreamWriter в модель.
 *
 * Позаботится об удалении переданного объекта QXmlStreamWriter.
 * @author Вася Почкаенко
 */
class WriterFromModel : public QObject{
Q_OBJECT
private:
	/** На этот символ будут заменены пробелы в именах атрибутов при записи xml и наоборот.*/
	QString space;

	/** Пишет в xml.*/
	QXmlStreamWriter *w;

	/** Модель в которую/из которой читаем/пишем.*/
	QAbstractItemModel *m;

	/** Записать атрибуты вопроса.*/
	inline void writeQAtr(int i);

	/** Записать вариант ответа.*/
	inline void writeV(const QModelIndex & p);

	/** Записать атрибуты ответа.*/
	inline void writeAAtr(int j, const QModelIndex & p);
public:
	explicit WriterFromModel(QAbstractItemModel * model, QXmlStreamWriter * XmlWriter, QObject * parent = 0);

	~WriterFromModel();

	/** Объект QXmlStreamWriter с помощью которого пишу.*/
	QXmlStreamWriter * streamWriter();
signals:

public slots:
	/** Записать данные в xml.*/
	void write();

	/** Установить объект QXmlStreamWriter с помощью которого пишу.*/
	void setStreamWriter(QXmlStreamWriter * streamWriter);
};

#endif // WRITERTOMODEL_H
